package com.sojson.util;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;

import com.sojson.constant.Constant;

/**
 * 数组,集合工具类
 * 
 * @author liu
 * @date 2020-11-02
 */
public class ArrayUtil {

    /**
     * 把数组转换为TreeSet集合
     */
    public static Set<?> arrayToTreeSet(Object[] array) {
        Set<Object> set = new TreeSet<>();
        for (Object id : array) {
            if (null != id) {
                set.add(id);
            }
        }
        return set;
    }

    /**
     * 把数组升序排序
     */
    public static void sort(String[] array) {
        Arrays.sort(array);
    }

    /**
     * 从集合中抽取一个元素
     * 
     * @param list
     * @return
     */
    public static <T> T getRandom(List<T> list) {
        return list.get(Constant.RANDOM.nextInt(list.size()));
    }

    /**
     * 从集合中抽取一个元素
     * 
     * @param map
     * @return
     */
    public static <T> T getRandom(Map<Object, T> map) {
        return getRandom((List<T>)map.values());
    }

    /**
     * 从集合中抽取一个元素Key
     * 
     * @param map
     * @return
     */
    public static <T> T getRandomKey(Map<T, Object> map) {
        return getRandom(map.keySet());
    }

    /**
     * 从集合中抽取一个元素
     * 
     * @param set
     * @return
     */
    public static <T> T getRandom(Set<T> set) {
        int nextInt = Constant.RANDOM.nextInt(set.size());
        int i = 0;
        for (T val : set) {
            if (nextInt == i) {
                return val;
            }
            i++;
        }

        return null;
    }

}